#include "Reflection/TypeID.h"
#include "TypeID.h"




CString STypeID::CreateTemplateTypeName(const STypeID &InGenericTypeName, const TVector<STypeID> &InArgumentTypes, const TVector<CString> &InArgumentPlaceholderNames)
{
    assert(InArgumentTypes.Num() == InArgumentPlaceholderNames.Num());
    CString Name = InGenericTypeName.GetTypeFullName() + U"<";
    for (int64_t i = 0; i < InArgumentTypes.Num(); i++)
    {
        if (i > 0)
        {
            Name += U",";
        }
        Name += InArgumentPlaceholderNames[i];
        Name += U"=";
        Name += InArgumentTypes[i].GetTypeFullName();
    }
    Name += U">";
    return Name;
}

CString STypeID::CreateTemplateTypeName(const CString &InGenericTypeName, const TVector<CString> &InTypeArguments, const TVector<CString> &InArgumentPlaceholderNames)
{
    assert(InTypeArguments.Num() == InArgumentPlaceholderNames.Num());
    CString Name = InGenericTypeName + U"<";
    for (int64_t i = 0; i < InTypeArguments.Num(); i++)
    {
        if (i > 0)
        {
            Name += U",";
        }
        Name += InArgumentPlaceholderNames[i];
        Name += U"=";
        Name += InTypeArguments[i];
    }
    Name += U">";
    return Name;
}
